/**
 * 处理键盘按下事件，禁用特定的快捷键组合，当触发这些快捷键时阻止默认行为并显示预设消息。
 *
 * @param {KeyboardEvent} event - 键盘按下事件对象。
 */
function toPresetMessage(event) {
	// 禁用 Ctrl+S / Cmd+S 保存快捷键，触发时显示预设消息
	if ((event.ctrlKey || event.metaKey) && event.key === 's') {
		event.preventDefault();
		presetMessage();
	}
	// 禁用 Ctrl+Shift+S (另存为) 快捷键，触发时显示预设消息
	if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === 'S') {
		event.preventDefault();
		presetMessage();
	}
	// 禁用打印快捷键 Ctrl+P，触发时显示预设消息
	if ((event.ctrlKey || event.metaKey) && event.key === 'p') {
		event.preventDefault();
		presetMessage();
	}
};

/**
 * 显示预设消息的异步函数。
 *
 * 获取预设的 Markdown 消息并显示，若开启语音播放则播放语音，最后打开指定链接。
 */
async function presetMessage() {
	/**
	 * 获取当前时间戳
	 */
	const now = Date.now();
	// 若距离上一次显示预设消息的时间小于 30000 毫秒（30 秒），则不执行后续操作，直接返回
	if (now - lastPresetMessageTime < 30000) return;
	// 更新上一次显示预设消息的时间戳为当前时间
	lastPresetMessageTime = now;
	/**
	 * 异步获取预设的 Markdown 消息内容
	 */
	const markdown = await fetchMarkdown('./prompt/prohibitMessage.md');
	// 将预设消息添加到聊天历史记录并渲染到界面上
	renderMessage(createMessageObject("assistant", markdown, false), chatHistoryPanel);
	// 若开启了自动语音播放功能，则播放预设消息的语音
	if (autoPlaySpeech) playSpeechModel(markdown);
	// 3 秒后在新窗口中打开指定链接
	setTimeout(() => window.open('https://gitee.com/TayunStarry/Lunar-Astral-Agents', '_blank'), 3000);
};